package com.icesoft.base.service;

import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @program: ice-parent
 * @description:IService基础公共组件
 * 1.对Mybatis-Plus的增强&补充
 * @author: xuefeng.gao
 * @create: 2018-09-11 15:06
 **/
public interface IBaseService<T> extends IService<T> {
    /**
     * 根据sql查询总数量
     * SqlRunner.db().selectList("select * from tbl_user where name={0}", "Caratacus")
     *
     * @param sql  sql语句，可添加参数，格式：{0},{1}
     * @param args 只接受String格式
     * @return
     */
    public int nQueryCount(String sql, Object... args);

    /**
     * 根据sql查询Map结果集
     * SqlRunner.db().selectList("select * from tbl_user where name={0}", "Caratacus")
     *
     * @param sql  sql语句，可添加参数，格式：{0},{1}
     * @param args 只接受String格式
     * @return
     */
    List<Map<String, Object>> nQueryList(String sql, Object... args);

    /**
     * 根据sql查询一个字段值的结果集
     * 注意：该方法只会返回一个字段的值， 如果需要多字段，请参考{@code selectList()}
     *
     * @param sql  sql语句，可添加参数，格式：{0},{1}
     * @param args 只接受String格式
     * @return
     */
    List<Object> nQueryObjs(String sql, Object... args);

    /**
     * 根据sql查询一个字段值的一条结果
     * 注意：该方法只会返回一个字段的值， 如果需要多字段，请参考{@code selectOne()}
     *
     * @param sql  sql语句，可添加参数，格式：{0},{1}
     * @param args 只接受String格式
     * @return
     */
    Object nQueryObj(String sql, Object... args);

    Map<String, Object> nQueryOne(String sql, Object... args);
}
